/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package it.allerj.demo;

import it.allerj.gui.action.FactoryGuiActionProxy;
import it.allerj.gui.action.GuiAction;
import it.allerj.gui.action.GuiActionInterface;
import it.allerj.model.CellMatrix;
import it.allerj.model.PersistedMatrix;
import it.allerj.model.RowMatrix;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Alessandro Veracchi
 */
public class DemoConfiguratorMatrix {

    java.util.ResourceBundle bundle = java.util.ResourceBundle.getBundle("it/allerj/bundle/allerj");
    private GuiActionInterface guiAction;

    public PersistedMatrix getMatrix(String name) {
        PersistedMatrix matrix = guiAction.getPersistenceObjectByStringAttribute(PersistedMatrix.class, "name", name);
        return matrix;
    }
    public PersistedMatrix getMatrixOne() {
        String name = "MatrixOne";
        PersistedMatrix matrix = guiAction.getPersistenceObjectByStringAttribute(PersistedMatrix.class, "name", name);
        if (matrix == null) {
            matrix = initSampleOne();
            matrix.setName("MatrixOne");
        }
        return matrix;
    }

    public PersistedMatrix getMatrixTwo() {
        String name = "MatrixTwo";
        PersistedMatrix matrix = guiAction.getPersistenceObjectByStringAttribute(PersistedMatrix.class, "name", name);
        if (matrix == null) {
            matrix = initSampleTwo();
            matrix.setName("MatrixTwo");
        }
        return matrix;
    }

    public static void main(String[] args) throws IOException {
        DemoConfiguratorMatrix dcm = new DemoConfiguratorMatrix();
        dcm.configMatrix(FactoryGuiActionProxy.standardGuiAction);

    }

    public static void configMatrix(GuiActionInterface guiAction) {
        try {
            DemoConfiguratorMatrix configurator = new DemoConfiguratorMatrix();
            configurator.setGuiAction(guiAction);
            PersistedMatrix matrixOne = configurator.getMatrixOne();
            guiAction.savePersistenceObject(matrixOne);
            PersistedMatrix matrixTwo = configurator.getMatrixTwo();
            guiAction.savePersistenceObject(matrixTwo);

        } catch (Exception ex) {
            Logger.getLogger(DemoConfiguratorMatrix.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    private PersistedMatrix initSampleOne() {

        PersistedMatrix foods = new PersistedMatrix(9, 9/*num of rows*/);

        // row #1
        List<String> s1 = Arrays.asList(
                "i18n.ref",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.ref");
        addRowToPersistedMatrix(foods, s1, 0);
        // row #2
        List<String> s2 = Arrays.asList(
                "i18n.76",
                "i18n.56",
                "i18n.43",
                "i18n.25",
                "i18n.65",
                "i18n.13",
                "i18n.81",
                "i18n.91",
                "i18n.71");
        addRowToPersistedMatrix(foods, s2, 1);
        // row #3
        List<String> s3 = Arrays.asList(
                "i18n.37",
                "i18n.110",
                "i18n.86",
                "i18n.93",
                "i18n.66",
                "i18n.b",
                "i18n.109",
                "i18n.42",
                "i18n.68");
        addRowToPersistedMatrix(foods, s3, 2);
        // row #4
        List<String> s4 = Arrays.asList(
                "i18n.49",
                "i18n.108",
                "i18n.97",
                "i18n.12",
                "i18n.14",
                "i18n.29",
                "i18n.15",
                "i18n.104",
                "i18n.111");
        addRowToPersistedMatrix(foods, s4, 3);
        // row #5
        List<String> s5 = Arrays.asList(
                "i18n.41",
                "i18n.103",
                "i18n.58",
                "i18n.98",
                "i18n.d",
                "i18n.53",
                "i18n.19",
                "i18n.99",
                "i18n.32");
        addRowToPersistedMatrix(foods, s5, 4);
        // row #6
        List<String> s6 = Arrays.asList(
                "i18n.52",
                "i18n.2",
                "i18n.44",
                "i18n.33",
                "i18n.28",
                "i18n.36",
                "i18n.115",
                "i18n.48",
                "i18n.51");
        addRowToPersistedMatrix(foods, s6, 5);
        // row #7
        List<String> s7 = Arrays.asList(
                "i18n.38",
                "i18n.24",
                "i18n.3",
                "i18n.45",
                "i18n.39",
                "i18n.18",
                "i18n.113",
                "i18n.22",
                "i18n.35");
        addRowToPersistedMatrix(foods, s7, 6);
        // row #8
        List<String> s8 = Arrays.asList(
                "i18n.23",
                "i18n.a",
                "i18n.8",
                "i18n.11",
                "i18n.21",
                "i18n.c",
                "i18n.4",
                "i18n.10",
                "i18n.9");
        addRowToPersistedMatrix(foods, s8, 7);
        // row #9
        List<String> s9 = Arrays.asList(
                "i18n.6",
                "i18n.17",
                "i18n.7",
                "i18n.5",
                "i18n.19",
                "i18n.1",
                "i18n.20",
                "i18n.empty",
                "i18n.empty");
        addRowToPersistedMatrix(foods, s9, 8);

        guiAction.savePersistenceObject(foods);
        return foods;
    }

    private PersistedMatrix initSampleTwo() {

        PersistedMatrix foods = new PersistedMatrix(9, 9/*num of rows*/);

        // row #1
        List<String> s1 = Arrays.asList(
                "i18n.ref",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.empty",
                "i18n.ref");
        addRowToPersistedMatrix(foods, s1, 0);
        // row #2
        List<String> s2 = Arrays.asList(
                "i18n.31",
                "i18n.89",
                "i18n.112",
                "i18n.107",
                "i18n.96",
                "i18n.47",
                "i18n.h",
                "i18n.116",
                "i18n.67");
        addRowToPersistedMatrix(foods, s2, 1);
        // row #3
        List<String> s3 = Arrays.asList(
                "i18n.1",
                "i18n.90",
                "i18n.69",
                "i18n.84",
                "i18n.54",
                "i18n.30",
                "i18n.80",
                "i18n.50",
                "i18n.40");
        addRowToPersistedMatrix(foods, s3, 2);
        // row #4
        List<String> s4 = Arrays.asList(
                "i18n.59",
                "i18n.s",
                "i18n.70",
                "i18n.82",
                "i18n.101",
                "i18n.77",
                "i18n.aa",
                "i18n.e",
                "i18n.106");
        addRowToPersistedMatrix(foods, s4, 3);
        // row #5
        List<String> s5 = Arrays.asList(
                "i18n.55",
                "i18n.63",
                "i18n.72",
                "i18n.27",
                "i18n.r",
                "i18n.105",
                "i18n.j",
                "i18n.102",
                "i18n.87");
        addRowToPersistedMatrix(foods, s5, 4);
        // row #6
        List<String> s6 = Arrays.asList(
                "i18n.o",
                "i18n.ac",
                "i18n.88",
                "i18n.64",
                "i18n.75",
                "i18n.x",
                "i18n.92",
                "i18n.26",
                "i18n.73");
        addRowToPersistedMatrix(foods, s6, 5);
        // row #7
        List<String> s7 = Arrays.asList(
                "i18n.83",
                "i18n.ab",
                "i18n.85",
                "i18n.74",
                "i18n.y",
                "i18n.57",
                "i18n.61",
                "i18n.u",
                "i18n.79");
        addRowToPersistedMatrix(foods, s7, 6);
        // row #8
        List<String> s8 = Arrays.asList(
                "i18n.95",
                "i18n.z",
                "i18n.94",
                "i18n.w",
                "i18n.f",
                "i18n.p",
                "i18n.60",
                "i18n.g",
                "i18n.m");
        addRowToPersistedMatrix(foods, s8, 7);
        // row #9
        List<String> s9 = Arrays.asList(
                "i18n.62",
                "i18n.1",
                "i18n.v",
                "i18n.n",
                "i18n.q",
                "i18n.t",
                "i18n.k",
                "i18n.empty",
                "i18n.empty");
        addRowToPersistedMatrix(foods, s9, 8);
        return foods;
    //  guiAction.savePersistenceObject(foods);
    }

    private void addRowToPersistedMatrix(PersistedMatrix matrix, List<String> valueCellList, int index) {
        RowMatrix row = new RowMatrix(9);
        addCellToPersistedMatrix(row, valueCellList);
        guiAction.savePersistenceObject(row);
        matrix.setRow(row, index);
    }

    private void addCellToPersistedMatrix(RowMatrix row, List<String> valueCellList) {
        for (String valueCell : valueCellList) {
            CellMatrix cell = new CellMatrix();
            cell.setValueCell(valueCell);
            row.addCell(cell);
            guiAction.savePersistenceObject(cell);
        }
    }

    public void setGuiAction(GuiActionInterface guiAction) {
        this.guiAction = guiAction;
    }
}
